package pe.edu.upc.dreamteam.dao;

import java.util.List;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport;
import org.springframework.stereotype.Repository;

import pe.edu.upc.dreamteam.bean.Promocion;
import pe.edu.upc.dreamteam.bean.Reserva;

@Repository
public class ReservaDAOImpl extends SimpleJdbcDaoSupport implements ReservaDAO {

	@Autowired
	public ReservaDAOImpl(DataSource dataSource) {
		setDataSource(dataSource);
	}
	
	@Override
	public Reserva consultarReserva(Integer id) {
		return getSimpleJdbcTemplate().queryForObject(
				"select id, idVuelo, fechaReserva, nroAsiento, dni," +
				"cliente, estado from reservas where id=?",
				new BeanPropertyRowMapper<Reserva>(Reserva.class), id);
	}

	@Override
	public List<Reserva> consultarReservas() {
		return getSimpleJdbcTemplate().query(
				"select id, idVuelo, fechaReserva, nroAsiento, dni," +
				"cliente, estado from reservas",
				new BeanPropertyRowMapper<Reserva>(Reserva.class));
	}

	@Override
	public void registrarReserva(Reserva reserva) {
		getJdbcTemplate().update(
				"insert into reservas (idVuelo, fechaReserva, nroAsiento, dni," +
				"cliente, estado) values(?, ?, ?, ?, ?, ?)",
				reserva.getIdVuelo(), reserva.getFechaReserva(), reserva.getNroAsiento(),
				reserva.getDni(), reserva.getCliente(), reserva.getEstado());
		// Setear el id autogenerado por el identity de HSQL
		reserva.setId(getSimpleJdbcTemplate().queryForInt("call identity()"));
	}

	@Override
	public void actualizarReserva(Reserva reserva) {
		getSimpleJdbcTemplate().update(
				"update reservas set idVuelo=?, fechaReserva=?," +
				"nroAsiento=?, dni=?, cliente=?, " +
				"estado=?" +
				"where id=?",
				reserva.getIdVuelo(), reserva.getFechaReserva(), reserva.getNroAsiento(),
				reserva.getDni(), reserva.getCliente(), reserva.getEstado(), reserva.getId());
	}

	@Override
	public void eliminarReserva(Integer id) {
		getSimpleJdbcTemplate().update("delete from reservas where id=?", id);
	}

}
